import logging

from entity.database.sqlite import Role
from entity.schema.role_schema import RoleOut, RoleCreate
from exception.custom_exception import CustomErrorThrowException


async def create_role_info(name:str,desc:str):
    '''
    创建角色到核心系统
    name : 角色名称
    desc : 角色描述
    return : none
    '''
    role = await Role.create(name=name,desc=desc)
    return {"code":200,"msg":"success","data":None}

async def get_role_info(role_id:int):
    '''
    根据id获取角色信息
    role_id :角色id
    return 角色信息
    '''
    role = await Role.get_or_none(id=role_id)
    if not role:
        logging.error(f"角色不存在,role_id={role_id}")
        raise CustomErrorThrowException(status_code=404, detail="角色不存在")
    new_role = RoleOut.from_orm(role)
    return new_role

async def update_role_info(role_id: int, role: RoleCreate):
    '''
    更新角色信息
    role_id : 角色id
    role : 角色更新信息
    return : none
    '''
    role_info = await Role.get_or_none(id=role_id)
    if not role_info:
        logging.error(f"角色不存在,role_id={role_id}")
        raise CustomErrorThrowException(status_code=404, detail="角色不存在")
    role_info.name = role.name
    role_info.desc = role.desc
    await role_info.save()
    return  role_info

async def delete_role_info(role_id: int):
    '''
    删除角色
    role_id : 角色id
    return : none
    '''
    role = await Role.get_or_none(id=role_id);
    if not role:
        logging.error(f"角色不存在,role_id={role_id}")
        raise CustomErrorThrowException(status_code=404, detail="角色不存在")
    await role.delete()
    return None